公開: 2022年1月25日
更新: 2022年1月25日
ソフトウェア工学では、過去のソフトウェア開発に関する実践経験から得られた暗黙知を集約して、学問的な理論の構築をすることがある。以下に述べるレーマンの「ソフトウェアの型理論」もその一つである。
1960年代のソフトウェア工学の黎明期において、全てのソフトウェアは、ユーザの述べる「仕様」に基づき、それを正確に実現する設計にまとめ、いくつかのプログラムとして実現し、それぞれの実現を確認したうえで、1つのソフトウェアとして統合する。つまり、仕様をしっかりと記述し、設計と仕様が合致していて、実現に間違いがなければ、「正しいソフトウェア」が実現されるはずである。全ての研究者がそう考えていた。
1970年代の終り頃、実際に開発され、20年以上にわたって利用されていた基本ソフトウェアを詳細に分析したレーマンは、現実の基本ソフトウェアが、上述したソフトウェア開発の流れとは異なるやり方で作り出され、保守されていたことを発見した。ソフトウェアは、十分に検討された「仕様」に基づいて設計されるのではなく、暫定的にまとめられた「仮の仕様」に基づいて設計されているのが現実であった。
長期間に渡って利用される基本ソフトウェアは、時間と共に変化するハードウェアの特性や性能に伴って、ユーザが抱く新しい要求に応えられるように「仕様」を変えながら、「進化」してゆくのである。この進化の故に、ある種のソフトウェアでは、「仕様」に合致する設計であることは、重大な問題ではなくなる。むしろ、変化する「仕様」に合わせて、設計も変えられるように考えられていなければならない。
つまり、「正しいソフトウェア」を作ることが重要ではなく、「進化できる設計に基づくソフトウェア」を作ることが重要な例が少なくないのである。レーマンは、そのようなソフトウェアを「進化型」のソフトウェアと名付け、従来型のソフトウェアを「仕様型」のソフトウェアと名付けた。レーマンの論文が書かれたころ、進化型は、基本ソフトウェアの特性であり、アプリケーションや組込みソフトウェアは、典型的な仕様型とされていた。
1990年代に入ると、日本で開発されていた銀行のオンラインシステムや、NASAで開発されたスペースシャトルの組込みソフトウェアも、進化型のソフトウェアの特徴が見られることが分かって来た。さらに、日本社会に普及し始めた携帯電話に組み込まれたソフトウェア開発の誤りは、進化型のソフトウェアを使用型のソフトウェアと理解して開発したことによる本質的な誤りであったと考えられる。
人類の過去の失敗から得られた知識を学ばずに、本質的に誤った認識を基に、古い知識に基づいてソフトウェアを開発することは、古代ギリシャの哲学者、ソクラテス、プラトン、アリストテレスが専門家として行ってはならない、倫理に反する行為としたことに当てはまる。今でも、日本社会のソフトウェア開発では、似たような失敗が、繰り返されている。
大場 充著、「組込みソフトウェア工学ハンドブック」、日科技連(2014)